(懷疑狗生)
動態網址介紹為我們簡單實作看看,對於動態網址的應用會更加地直觀。
首先我們到urls.py
中添加幾個指令:
<Project/urls.py>
urlpatterns = [
(...)
#新增一個可以輸入年級、班級、學號的路徑
path('try_to_something_str/<str:Grade>/<str:Class>/<int:Number>',
views.check_class_member),
]
到views.py
中添加以下指令:
<job/views.py>
@csrf_exempt
def check_class_member(request, Grade, Class, Number):
#Grade, Class, Number是從路徑引入的參數值。
outputinfo = {} #JSON輸出用
if request.method == "GET": #限定輸入類型為GET
searchGrade = Classlist.objects.filter(Grade=Grade).count()
#篩選符合年級的資料筆數
searchClass = Classlist.objects.filter(Class=Class).count()
#篩選符合班級的資料筆數
searchNumber = Classlist.objects.filter(Number=Number).count()
#篩選符合學號的資料筆數
if searchGrade == 1 and searchClass == 1 and searchNumber == 1 :
#若以上三個資料筆數都為1時:
searchName = Classlist.objects.get(Grade=Grade,
Class=Class,
Number=Number)
#取得符合以上三個搜尋要素的學生
outputinfo = {"搜尋結果": searchName.Name}
#印出搜尋到的結果
else:
#若以上三個資料筆數不為1時:
outputinfo = {"年級搜尋筆數": searchGrade,
"班級搜尋筆數": searchClass,
"座號搜尋筆數": searchNumber,
"搜尋學生":"找不到此學生"}
#將三個篩選的資料筆數與找不到此學生都列印出來
else:
outputinfo['資料類型錯誤'] = "請使用GET輸入"
return JsonResponse(outputinfo, safe=False, json_dumps_params={'ensure_ascii': False})
我們測試看看:
目前資料庫有這五位學生資料
我們到Postman搜尋:127.0.0.1:8000/check_class_member/四年級/甲班/13/
我們改搜尋:127.0.0.1:8000/check_class_member/六年級/甲班/13/
好像這三樣都有至少1筆的資料,導致搜尋到結果不符合條件。
我們回到views.py
修改一下條件判斷:
#更改前
if searchGrade == 1 and searchClass == 1 and searchNumber == 1 :
#將符合條件從(==1)改成(>=1)
#更改後
if searchGrade >= 1 and searchClass >= 1 and searchNumber >= 1 :
再試看看:
這樣我們就能透過動態網址搜尋我們要的資料了,希望大家都實作成功。
先到這裡,大家掰掰~
圖片來源:狗勾司機